/**
* Essential OCL Grammar
* <copyright>
*
* Copyright (c) 2005, 2010 IBM Corporation and others.
* All rights reserved.   This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*   IBM - Initial API and implementation
*   E.D.Willink - Elimination of some shift-reduce conflicts
*   E.D.Willink - Remove unnecessary warning suppression
*   E.D.Willink - Bugs 184048, 225493, 243976, 259818, 282882, 287993, 288040, 292112, 295166
*   Borland - Bug 242880
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias):
*        - 242153: LPG v 2.0.17 adoption.
*        - 299396: Introducing new LPG templates
*        - 300534: Removing the use of deprecated macros.
* </copyright>
*
* $Id: EssentialOCL.gi,v 1.8 2010/02/09 21:04:08 ewillink Exp $
*/
/**
* Complete OCL Grammar
* <copyright>
*
* Copyright (c) 2005, 2009 IBM Corporation and others.
* All rights reserved.   This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*   IBM - Initial API and implementation
*   E.D.Willink - Bug 259818, 285633, 292112
*   Adolfo Sanchez-Barbudo Herrera (Open Canarias):
*        - 242153: LPG v 2.0.17 adoption.
*        - 299396: Introducing new LPG templates
*        - 300534: Removing the use of deprecated macros.
* </copyright>
*/

package edu.pku.sei.ocl.parser;

public class OCLParserprs implements lpg.runtime.ParseTable, OCLParsersym {
    public final static int ERROR_SYMBOL = 90;
    public final int getErrorSymbol() { return ERROR_SYMBOL; }

    public final static int SCOPE_UBOUND = 54;
    public final int getScopeUbound() { return SCOPE_UBOUND; }

    public final static int SCOPE_SIZE = 55;
    public final int getScopeSize() { return SCOPE_SIZE; }

    public final static int MAX_NAME_LENGTH = 29;
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }

    public final static int NUM_STATES = 294;
    public final int getNumStates() { return NUM_STATES; }

    public final static int NT_OFFSET = 90;
    public final int getNtOffset() { return NT_OFFSET; }

    public final static int LA_STATE_OFFSET = 6154;
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }

    public final static int MAX_LA = 1;
    public final int getMaxLa() { return MAX_LA; }

    public final static int NUM_RULES = 349;
    public final int getNumRules() { return NUM_RULES; }

    public final static int NUM_NONTERMINALS = 133;
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }

    public final static int NUM_SYMBOLS = 223;
    public final int getNumSymbols() { return NUM_SYMBOLS; }

    public final static int SEGMENT_SIZE = 8192;
    public final int getSegmentSize() { return SEGMENT_SIZE; }

    public final static int START_STATE = 5440;
    public final int getStartState() { return START_STATE; }

    public final static int IDENTIFIER_SYMBOL = 6;
    public final int getIdentifier_SYMBOL() { return IDENTIFIER_SYMBOL; }

    public final static int EOFT_SYMBOL = 85;
    public final int getEoftSymbol() { return EOFT_SYMBOL; }

    public final static int EOLT_SYMBOL = 85;
    public final int getEoltSymbol() { return EOLT_SYMBOL; }

    public final static int ACCEPT_ACTION = 5804;
    public final int getAcceptAction() { return ACCEPT_ACTION; }

    public final static int ERROR_ACTION = 5805;
    public final int getErrorAction() { return ERROR_ACTION; }

    public final static boolean BACKTRACK = false;
    public final boolean getBacktrack() { return BACKTRACK; }

    public final int getStartSymbol() { return lhs(0); }
    public final boolean isValidForParser() { return OCLParsersym.isValidForParser; }


    public interface IsNullable {
        public final static byte isNullable[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,1,
            1,1,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,1,0,0,0,
            1,0,1,1,0,0,0,0,0,0,
            0,0,1,0,0,1,0,0,0,0,
            0,0,0,1,0,0,0,0,0,0,
            0,0,0
        };
    };
    public final static byte isNullable[] = IsNullable.isNullable;
    public final boolean isNullable(int index) { return isNullable[index] != 0; }

    public interface ProsthesesIndex {
        public final static char prosthesesIndex[] = {0,
            12,13,9,10,15,17,18,11,29,30,
            31,32,33,38,39,40,41,42,43,44,
            46,47,48,49,50,51,52,53,54,59,
            60,61,86,88,89,90,91,101,126,131,
            132,133,83,84,85,80,81,82,77,78,
            79,74,75,76,71,72,73,68,69,70,
            65,66,67,24,55,62,63,64,125,21,
            25,100,56,6,8,14,16,22,23,57,
            58,98,128,28,87,94,110,111,112,113,
            27,36,37,95,96,104,120,121,124,26,
            34,35,99,102,103,106,109,115,116,117,
            122,123,2,3,4,19,20,45,92,93,
            97,105,107,108,114,118,119,127,129,130,
            1,5,7
        };
    };
    public final static char prosthesesIndex[] = ProsthesesIndex.prosthesesIndex;
    public final int prosthesesIndex(int index) { return prosthesesIndex[index]; }

    public interface IsKeyword {
        public final static byte isKeyword[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,0,0,0,0,0,
            0,0,0,0,0,0,1,0,0,0,
            0,0,0,1,1,1,1,1,1,1,
            0,1,0,0,0,0,1,1,1,0,
            1,1,0,1,1,1,0,1,1,1,
            1,0,1,1,1,1,1,1,0,1,
            1,1,1,1,0,1,0,0,0,0
        };
    };
    public final static byte isKeyword[] = IsKeyword.isKeyword;
    public final boolean isKeyword(int index) { return isKeyword[index] != 0; }

    public interface BaseCheck {
        public final static short baseCheck[] = {0,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,2,1,1,1,
            3,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,4,4,
            0,1,1,3,1,3,3,5,1,1,
            1,1,1,1,1,1,1,1,1,1,
            4,4,0,1,1,3,1,1,3,1,
            1,1,1,1,1,1,4,1,3,1,
            1,1,2,1,1,1,1,1,1,1,
            1,1,1,1,1,8,10,10,8,10,
            1,1,1,5,6,8,8,7,7,6,
            9,1,4,6,4,7,5,0,0,1,
            1,3,1,1,1,1,1,1,1,1,
            1,3,1,3,1,1,1,3,1,3,
            1,1,1,3,1,3,1,1,1,3,
            1,3,1,1,1,3,3,1,3,3,
            1,1,1,3,3,3,3,1,3,3,
            3,3,1,1,1,3,3,1,3,3,
            1,1,1,3,3,1,3,3,1,1,
            1,2,2,1,2,2,1,1,1,1,
            1,1,3,7,4,1,3,1,1,1,
            1,1,1,0,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,0,1,1,0,1,7,2,2,1,
            6,6,0,1,1,3,1,3,1,1,
            1,2,1,1,4,1,0,1,1,2,
            1,1,1,7,1,2,3,3,3,5,
            1,2,4,4,5,3,3,3,1,2,
            4,4,4,6,8,0,1,1,3,1,
            1,1,1,1,10,1,1,3,6,2,
            1,3,2,1,1,1,2,1,4,4,
            1,6,4,3,3,3,3,3,3,2,
            2,1,3,1,6,1,9,5,7,-36,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-17,0,0,-2,-5,0,-6,-81,0,
            0,-7,0,0,-8,-12,-16,-3,0,0,
            -69,0,0,-89,0,0,-19,-24,0,-94,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-103,
            0,0,0,0,0,0,0,-104,0,0,
            0,-115,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-86,0,0,
            -99,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -105,0,0,-25,-26,0,-15,0,0,-4,
            -28,0,-29,-18,0,0,0,0,-31,-37,
            -32,-135,0,0,-106,0,0,-161,0,0,
            -80,0,0,-100,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-35,0,0,0,0,-204,0,
            0,-220,0,0,0,0,-224,0,0,0,
            0,0,-83,-196,0,0,0,-253,0,0,
            -38,-40,0,-41,0,0,-200,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -42,-43,-45,-48,-49,-50,-51,-52,-53,0,
            -54,-55,0,-56,-57,-58,-59,-64,-65,-66,
            -67,0,-68,-70,-71,0,-219,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-72,-73,
            -77,-84,-87,-88,0,-90,-96,-102,-107,-108,
            -117,-118,-119,-129,-132,-133,-134,0,-254,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -136,-137,-139,-140,-142,-143,-144,-146,-147,-148,
            -149,0,-150,-151,-152,-153,-154,-155,-156,-157,
            -159,-160,-163,-166,-167,-168,-169,0,-270,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-170,
            -171,0,-172,-173,-174,-175,0,-176,-177,-181,
            -182,-183,-184,-185,-186,-187,-188,-189,-190,0,
            -91,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-191,-203,-210,-213,-214,-217,-218,-221,
            -223,-225,-141,0,-211,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-227,-229,-231,-233,-234,
            -235,-236,0,-240,-243,-244,-30,-226,-245,-246,
            -247,-249,-250,-251,-252,-255,-256,-259,-260,-261,
            0,-263,-264,-271,-278,-279,-280,-281,0,0,
            -212,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-282,0,-283,-284,-285,-287,-288,-292,-293,
            -294,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-228,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -274,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-162,0,-201,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-164,0,-209,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -238,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -205,0,-241,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-237,0,-242,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-239,0,-276,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-262,0,-277,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-39,0,
            -95,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-92,0,-216,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-145,0,-258,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-165,0,-269,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-20,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-22,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-23,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-44,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-46,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-47,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-74,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-75,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-76,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-79,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-130,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-158,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-179,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-192,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-193,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-202,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-208,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-222,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-230,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-232,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-265,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-267,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-275,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-289,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-290,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-291,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-109,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-110,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-128,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-111,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-112,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-126,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-127,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-113,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-114,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-122,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-123,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-124,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-125,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-116,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -60,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-34,
            0,0,-194,0,0,-272,0,0,0,0,
            0,0,0,-178,0,0,-9,0,0,0,
            0,0,0,0,0,0,-61,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-197,0,0,
            0,0,0,-207,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-248,
            -286,0,-62,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-273,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-10,0,
            0,0,0,0,0,0,0,0,-120,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -21,0,0,0,0,0,0,0,0,-1,
            0,0,0,0,0,-82,0,0,0,0,
            0,-266,0,0,0,0,-11,0,0,0,
            0,0,0,0,-121,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-13,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-14,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-27,0,0,0,0,0,0,
            0,0,0,-101,0,0,0,0,0,0,
            0,-180,0,0,0,0,0,0,0,-33,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-195,0,0,0,0,0,
            0,0,-198,0,0,0,0,0,0,0,
            -138,0,0,0,0,0,-85,0,0,0,
            0,0,-93,0,0,0,0,0,0,0,
            -215,0,0,0,0,0,-97,0,0,0,
            0,-78,0,0,-98,0,0,0,0,-199,
            0,0,0,0,0,0,0,-257,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-131,0,0,0,-206,0,0,0,
            0,0,-63,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-268,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0
        };
    };
    public final static short baseCheck[] = BaseCheck.baseCheck;
    public final int baseCheck(int index) { return baseCheck[index]; }
    public final static short rhs[] = baseCheck;
    public final int rhs(int index) { return rhs[index]; };

    public interface BaseAction {
        public final static char baseAction[] = {
            113,114,114,114,114,114,114,114,114,114,
            114,114,114,114,114,114,115,132,132,132,
            132,132,132,132,132,132,132,132,74,133,
            75,75,75,8,1,1,2,2,76,76,
            5,5,4,4,4,4,4,4,4,4,
            3,3,3,3,3,77,77,77,77,6,
            7,116,116,117,117,78,70,79,71,100,
            100,91,91,84,84,84,84,9,9,9,
            9,10,10,101,101,102,102,92,92,93,
            12,12,12,12,12,12,12,11,118,118,
            14,15,16,16,17,17,18,19,20,13,
            13,13,21,21,23,23,24,24,24,25,
            25,22,22,22,27,27,27,27,27,27,
            27,27,29,28,28,30,30,30,80,81,
            81,73,73,64,64,32,31,65,65,68,
            68,66,66,67,67,62,62,61,61,63,
            63,59,59,58,58,60,60,56,56,55,
            55,57,57,53,53,52,52,52,54,54,
            54,50,50,49,49,49,49,49,51,51,
            51,51,51,47,47,46,46,46,48,48,
            48,44,44,43,43,43,45,45,45,85,
            85,33,33,33,34,34,34,26,26,35,
            35,35,35,35,37,36,119,119,113,113,
            113,113,113,113,113,132,132,132,132,132,
            132,132,132,132,132,132,132,132,132,132,
            132,132,82,82,4,103,103,27,30,72,
            80,38,38,104,104,105,105,96,96,96,
            35,120,120,122,122,106,123,124,124,107,
            107,87,87,87,88,125,125,95,95,89,
            89,108,108,86,86,86,109,109,90,127,
            127,94,94,94,110,126,97,97,98,98,
            111,111,111,111,111,112,64,21,69,69,
            128,128,99,99,83,83,83,121,121,39,
            39,129,130,130,66,67,55,57,58,60,
            33,34,35,40,28,41,27,42,70,71,
            335,2293,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,324,143,883,148,874,316,
            326,325,29,40,426,34,200,5580,27,29,
            40,426,315,966,672,463,36,195,29,447,
            426,29,974,426,415,320,426,3,658,1171,
            386,2367,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,141,143,883,148,874,316,
            29,1071,426,1057,280,281,282,283,29,1072,
            426,1056,488,2219,426,862,109,781,861,111,
            145,221,77,78,79,80,90,91,782,93,
            94,95,96,219,112,113,114,115,863,121,
            122,123,132,1156,220,203,206,670,214,222,
            270,317,342,344,346,201,1158,200,279,1055,
            1058,437,2219,426,862,109,781,861,111,145,
            221,77,78,79,80,90,91,782,93,94,
            95,96,219,112,113,114,115,863,121,122,
            123,132,869,220,203,206,670,214,222,270,
            317,342,344,346,864,878,198,866,877,188,
            865,879,178,868,876,171,867,880,165,872,
            875,159,871,881,153,1067,143,883,148,874,
            316,602,1715,426,739,785,1073,29,669,426,
            11,859,671,869,207,280,281,282,283,874,
            115,52,558,85,87,29,2464,426,29,1246,
            426,209,1066,1068,437,2219,426,862,109,781,
            861,111,145,221,77,78,79,80,90,91,
            782,93,94,95,96,219,112,113,114,115,
            863,121,122,123,132,869,220,203,206,670,
            214,222,270,317,342,344,346,864,878,198,
            866,877,188,865,879,178,868,876,171,867,
            880,165,872,875,159,871,881,153,1067,143,
            883,148,874,316,29,321,426,291,291,29,
            1328,426,29,1342,426,16,1633,29,1344,426,
            272,438,327,83,579,300,85,87,815,773,
            774,575,440,1337,169,1069,1068,335,2293,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,869,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,866,877,188,865,879,178,868,
            876,171,867,880,165,872,875,159,871,881,
            153,324,143,883,148,874,316,326,325,292,
            292,219,248,218,389,276,193,53,262,514,
            966,370,412,286,477,670,324,468,491,520,
            147,564,444,551,32,478,1467,116,5290,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,869,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,866,877,188,865,879,178,868,
            876,171,867,880,165,872,875,159,871,881,
            153,1335,1341,883,148,874,316,1340,1336,515,
            644,915,553,271,255,71,427,323,701,361,
            528,333,177,972,583,860,917,539,1339,335,
            2293,426,862,109,781,861,111,145,221,77,
            78,79,80,90,91,782,93,94,95,96,
            219,112,113,114,115,863,121,122,123,132,
            869,220,203,206,670,214,222,270,317,342,
            344,346,864,878,198,866,877,188,865,879,
            178,868,876,171,867,880,165,872,875,159,
            871,881,153,324,143,883,148,874,316,326,
            325,556,986,931,816,703,807,439,981,311,
            56,567,966,895,991,985,568,938,987,884,
            1001,709,992,996,616,997,1005,871,1551,335,
            5291,426,862,109,781,861,111,145,221,77,
            78,79,80,90,91,782,93,94,95,96,
            219,112,113,114,115,863,121,122,123,132,
            869,220,203,206,670,214,222,270,317,342,
            344,346,864,878,198,866,877,188,865,879,
            178,868,876,171,867,880,165,872,875,159,
            871,881,153,141,143,883,148,874,316,72,
            677,756,1436,728,920,968,629,71,782,783,
            901,702,835,837,966,914,563,873,858,882,
            1435,1,2293,426,862,109,781,861,111,145,
            221,77,78,79,80,90,91,782,93,94,
            95,96,219,112,113,114,115,863,121,122,
            123,132,869,220,203,206,670,214,222,270,
            317,342,344,346,864,878,198,866,877,188,
            865,879,178,868,876,171,867,880,165,872,
            875,159,871,881,153,324,143,883,148,874,
            316,326,325,1012,1015,1014,1018,1019,1027,1029,
            1021,1032,1033,604,1054,54,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,869,220,203,206,
            670,214,222,270,317,342,344,346,864,878,
            198,866,877,188,865,879,178,868,876,171,
            867,880,165,872,875,159,871,881,153,269,
            143,883,148,874,316,260,1023,1036,1037,1039,
            1042,1043,1044,133,973,1047,1048,41,613,363,
            1051,1052,1053,1054,1056,1058,1060,1059,1064,1066,
            1072,265,1074,1079,1075,1080,1062,1084,1067,1329,
            1331,54,2219,426,862,109,781,861,111,145,
            221,77,78,79,80,90,91,782,93,94,
            95,96,219,112,113,114,115,863,121,122,
            123,132,869,220,203,206,670,214,222,270,
            317,342,344,346,864,878,198,866,877,188,
            865,879,178,868,876,171,867,880,165,872,
            875,159,871,881,153,269,143,883,148,874,
            316,299,1087,285,976,1083,980,1089,1092,1096,
            1097,1101,5805,5805,5805,5805,5805,5805,5805,5805,
            5805,5805,5805,5805,5805,5805,5805,265,5805,5805,
            5805,5805,5805,778,681,1332,1331,167,2293,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,869,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,866,877,188,865,879,178,868,
            876,171,867,880,165,872,875,159,871,881,
            153,324,143,883,148,874,316,326,325,5805,
            5805,5805,5805,5805,5805,5805,5805,5805,5805,5805,
            1054,282,2293,426,862,109,781,861,111,145,
            221,77,78,79,80,90,91,782,93,94,
            95,96,219,112,113,114,115,863,121,122,
            123,132,869,220,203,206,670,214,222,270,
            317,342,344,346,864,878,198,866,877,188,
            865,879,178,868,876,171,867,880,165,872,
            875,159,871,881,153,324,143,883,148,874,
            316,326,325,5805,5805,5805,5805,5805,5805,5805,
            5805,5805,5805,974,1054,386,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,869,220,203,206,
            670,214,222,270,317,342,344,346,864,878,
            198,866,877,188,865,879,178,868,876,171,
            867,880,165,872,875,159,871,881,153,141,
            143,883,148,874,316,260,5805,5805,1057,5805,
            5805,5805,5805,1247,5805,888,1327,335,2219,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,869,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,866,877,188,865,879,178,868,
            876,171,867,880,165,872,875,159,871,881,
            153,1067,143,883,148,874,316,260,5805,5805,
            5805,5805,5805,5805,5805,1248,5805,5805,5805,5805,
            5805,5805,5805,5805,5805,5805,5805,5805,5805,86,
            87,386,2219,426,862,109,781,861,111,145,
            221,77,78,79,80,90,91,782,93,94,
            95,96,219,112,113,114,115,863,121,122,
            123,132,869,220,203,206,670,214,222,270,
            317,342,344,346,864,878,198,866,877,188,
            865,879,178,868,876,171,867,880,165,872,
            875,159,871,881,153,141,143,883,148,874,
            316,5805,5805,5805,1057,5805,5805,5805,5805,5805,
            5805,974,1349,386,2219,426,862,109,781,861,
            111,145,221,77,78,79,80,90,91,782,
            93,94,95,96,219,112,113,114,115,863,
            121,122,123,132,869,220,203,206,670,214,
            222,270,317,342,344,346,864,878,198,866,
            877,188,865,879,178,868,876,171,867,880,
            165,872,875,159,871,881,153,141,143,883,
            148,874,316,260,5805,5805,1057,5805,5805,5805,
            5805,137,5805,974,1352,386,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,869,220,203,206,
            670,214,222,270,317,342,344,346,864,878,
            198,866,877,188,865,879,178,868,876,171,
            867,880,165,872,875,159,871,881,153,141,
            143,883,148,874,316,260,5805,5805,1057,5805,
            5805,5805,5805,1348,5805,941,1353,386,2219,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,869,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,866,877,188,865,879,178,868,
            876,171,867,880,165,872,875,159,871,881,
            153,141,143,883,148,874,316,260,5805,5805,
            1057,5805,5805,5805,5805,1350,5805,974,1437,386,
            2219,426,862,109,781,861,111,145,221,77,
            78,79,80,90,91,782,93,94,95,96,
            219,112,113,114,115,863,121,122,123,132,
            869,220,203,206,670,214,222,270,317,342,
            344,346,864,878,198,866,877,188,865,879,
            178,868,876,171,867,880,165,872,875,159,
            871,881,153,141,143,883,148,874,316,260,
            5805,5805,1057,5805,5805,5805,5805,136,5805,833,
            1438,335,2219,426,862,109,781,861,111,145,
            221,77,78,79,80,90,91,782,93,94,
            95,96,219,112,113,114,115,863,121,122,
            123,132,869,220,203,206,670,214,222,270,
            317,342,344,346,864,878,198,866,877,188,
            865,879,178,868,876,171,867,880,165,872,
            875,159,871,881,153,141,143,883,148,874,
            316,258,5805,627,1059,335,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,869,220,203,206,
            670,214,222,270,317,342,344,346,864,878,
            198,866,877,188,865,879,178,868,876,171,
            867,880,165,872,875,159,871,881,153,141,
            143,883,148,874,316,258,5805,962,1334,220,
            2219,426,862,109,781,861,111,145,221,77,
            78,79,80,90,91,782,93,94,95,96,
            219,112,113,114,115,863,121,122,123,132,
            869,220,203,206,670,214,222,270,317,342,
            344,346,864,878,198,866,877,188,865,879,
            178,868,876,171,867,880,165,872,875,159,
            871,881,153,269,143,883,148,874,316,258,
            5805,5805,5805,5805,5805,5805,5805,5805,5805,5805,
            5805,5805,5805,5805,5805,5805,5805,5805,5805,5805,
            5805,5805,5805,5805,376,266,335,2219,426,862,
            109,781,861,111,145,221,77,78,79,80,
            90,91,782,93,94,95,96,219,112,113,
            114,115,863,121,122,123,132,869,220,203,
            206,670,214,222,270,317,342,344,346,864,
            878,198,866,877,188,865,879,178,868,876,
            171,867,880,165,872,875,159,871,881,153,
            141,143,883,148,874,316,1249,5805,5805,1434,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,67,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,288,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,287,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,968,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,969,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,970,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,303,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,302,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,301,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,293,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,68,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,1245,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,225,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,297,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,296,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,142,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,89,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,349,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,333,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,1347,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,1355,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,1357,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,332,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,1439,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,1440,143,883,148,874,316,
            335,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,869,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,871,881,153,1441,143,883,148,874,316,
            488,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,1074,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,868,876,171,867,880,165,872,875,
            159,155,1075,335,488,2219,426,862,109,781,
            861,111,145,221,77,78,79,80,90,91,
            782,93,94,95,96,219,112,113,114,115,
            863,121,122,123,132,1074,220,203,206,670,
            214,222,270,317,342,344,346,864,878,198,
            866,877,188,865,879,178,868,876,171,867,
            880,165,872,875,159,155,1076,154,488,2219,
            426,862,109,781,861,111,145,221,77,78,
            79,80,90,91,782,93,94,95,96,219,
            112,113,114,115,863,121,122,123,132,1168,
            220,203,206,670,214,222,270,317,342,344,
            346,864,878,198,866,877,188,865,879,178,
            868,876,171,867,880,165,161,1169,160,488,
            2219,426,862,109,781,861,111,145,221,77,
            78,79,80,90,91,782,93,94,95,96,
            219,112,113,114,115,863,121,122,123,132,
            1077,220,203,206,670,214,222,270,317,342,
            344,346,864,878,198,866,877,188,865,879,
            178,868,876,171,167,1150,339,488,2219,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,1077,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,866,877,188,865,879,178,868,
            876,171,167,1151,166,488,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,1165,220,203,206,
            670,214,222,270,317,342,344,346,864,878,
            198,866,877,188,865,879,178,173,1166,337,
            488,2219,426,862,109,781,861,111,145,221,
            77,78,79,80,90,91,782,93,94,95,
            96,219,112,113,114,115,863,121,122,123,
            132,1165,220,203,206,670,214,222,270,317,
            342,344,346,864,878,198,866,877,188,865,
            879,178,173,1167,172,488,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,1153,220,203,206,
            670,214,222,270,317,342,344,346,864,878,
            198,866,877,188,181,1154,180,488,2219,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,1153,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,866,877,188,181,1155,179,488,
            2219,426,862,109,781,861,111,145,221,77,
            78,79,80,90,91,782,93,94,95,96,
            219,112,113,114,115,863,121,122,123,132,
            1160,220,203,206,670,214,222,270,317,342,
            344,346,864,878,198,193,1161,192,488,2219,
            426,862,109,781,861,111,145,221,77,78,
            79,80,90,91,782,93,94,95,96,219,
            112,113,114,115,863,121,122,123,132,1160,
            220,203,206,670,214,222,270,317,342,344,
            346,864,878,198,193,1162,191,488,2219,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,1160,220,
            203,206,670,214,222,270,317,342,344,346,
            864,878,198,193,1163,190,488,2219,426,862,
            109,781,861,111,145,221,77,78,79,80,
            90,91,782,93,94,95,96,219,112,113,
            114,115,863,121,122,123,132,1160,220,203,
            206,670,214,222,270,317,342,344,346,864,
            878,198,193,1164,189,488,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,1156,220,203,206,
            670,214,222,270,317,342,344,346,201,1159,
            199,488,2219,426,862,109,781,861,111,145,
            221,77,78,79,80,90,91,782,93,94,
            95,96,219,112,113,114,115,863,121,122,
            123,132,971,220,209,341,670,214,222,270,
            317,342,344,346,5805,5805,5805,5805,5805,5805,
            5805,5805,5805,5805,5805,5805,5805,5805,5805,5805,
            90,428,426,90,428,426,832,40,426,959,
            55,960,57,58,29,973,426,754,38,426,
            30,31,5805,5805,5805,5805,340,488,2219,426,
            862,109,781,861,111,145,221,77,78,79,
            80,90,91,782,93,94,95,96,219,112,
            113,114,115,863,121,122,123,132,971,220,
            209,216,670,214,222,270,317,342,344,346,
            75,76,5805,75,76,5805,5805,5805,73,74,
            5805,73,74,256,308,227,5805,308,90,428,
            426,32,39,253,29,1064,426,963,964,448,
            1251,964,5805,5805,5805,5805,5805,5805,5805,304,
            925,956,213,488,2219,426,862,109,781,861,
            111,145,221,77,78,79,80,90,91,782,
            93,94,95,96,219,112,113,114,115,863,
            121,122,123,132,971,220,209,215,670,214,
            222,270,317,342,344,346,5805,5805,75,76,
            5805,5805,5805,5805,64,5805,73,74,5805,5805,
            5805,5805,308,832,40,426,959,55,960,57,
            58,5805,258,258,5805,1252,964,5805,5805,754,
            38,426,30,31,5805,5805,5805,5805,212,488,
            2219,426,862,109,781,861,111,145,221,77,
            78,79,80,90,91,782,93,94,95,96,
            219,112,113,114,115,863,121,122,123,132,
            971,220,209,208,670,214,222,270,317,342,
            344,346,5805,5805,5805,5805,5805,5805,5805,5805,
            256,576,40,426,959,55,960,57,58,5805,
            675,428,426,32,39,253,780,38,426,30,
            31,654,29,973,426,5805,305,754,38,426,
            30,31,5805,5805,205,488,2219,426,862,109,
            781,861,111,145,221,77,78,79,80,90,
            91,782,93,94,95,96,219,112,113,114,
            115,863,121,122,123,132,971,220,209,207,
            670,214,222,270,317,342,344,346,884,5805,
            75,76,754,38,426,30,31,5805,73,74,
            32,39,1051,1356,232,5805,229,279,281,282,
            283,32,39,253,230,231,5805,5805,5805,655,
            754,38,426,30,31,5805,273,437,5805,5805,
            204,438,328,425,754,38,426,30,31,5805,
            664,660,271,274,806,40,426,959,55,960,
            57,58,674,40,426,959,55,960,57,58,
            256,5805,5805,5805,5805,5805,32,39,253,5805,
            5805,5805,5805,5805,661,700,40,426,959,55,
            960,57,58,806,40,426,959,55,960,57,
            58,29,428,426,32,39,253,780,38,426,
            30,31,663,780,38,426,30,31,32,39,
            253,780,38,426,30,31,961,29,1061,426,
            5805,1070,29,977,426,152,1064,426,5805,1250,
            806,40,426,959,55,960,57,58,806,40,
            426,959,55,960,57,58,5805,279,281,282,
            283,5805,66,29,977,426,5805,29,1061,426,
            1338,75,76,29,973,426,5805,578,5805,73,
            74,32,39,41,5805,309,5805,32,39,1253,
            29,1432,426,5805,962,32,39,2055,70,5805,
            5805,5805,976,5805,5805,63,69,5805,5805,5805,
            5805,5805,5805,5805,5805,5805,5805,1326,5805,5805,
            5805,5805,5805,5805,5805,268,5805,98,5805,5805,
            5805,5805,5805,976,5805,5805,5805,5805,70,5805,
            5805,294,975,5805,226,1060,69,5805,5805,5805,
            5805,1063,1065,5805,5805,5805,5805,5805,5805,5805,
            72,5805,5805,5805,5805,5805,5805,99,71,5805,
            5805,5805,295,975,5805,5805,5805,5805,5805,5805,
            5805,1358,5805,5805,5805,5805,5805,5805,5805,5805,
            5805,5805,972,5805,5805
        };
    };
    public final static char baseAction[] = BaseAction.baseAction;
    public final int baseAction(int index) { return baseAction[index]; }
    public final static char lhs[] = baseAction;
    public final int lhs(int index) { return lhs[index]; };

    public interface TermCheck {
        public final static byte termCheck[] = {0,
            0,1,0,1,4,5,6,7,8,9,
            0,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,0,27,0,3,
            30,0,4,0,6,0,10,37,38,39,
            0,10,0,43,44,45,46,47,48,49,
            50,0,0,0,1,0,56,4,5,6,
            7,8,9,0,11,12,13,14,15,16,
            17,18,19,20,21,22,23,24,25,28,
            27,26,0,30,74,75,76,77,78,0,
            37,38,39,4,59,6,43,44,45,46,
            47,48,49,50,52,65,0,55,68,69,
            59,56,61,62,0,0,1,2,85,4,
            5,6,7,8,9,72,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,59,27,61,62,30,0,33,34,35,
            36,0,37,38,39,4,0,6,43,44,
            45,46,47,48,49,50,0,1,0,1,
            4,5,6,7,8,9,0,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,0,27,0,27,30,5,52,0,
            0,55,26,37,38,39,0,0,0,43,
            44,45,46,47,48,49,50,0,0,0,
            1,29,56,4,5,6,7,8,9,30,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,24,25,27,27,0,1,30,
            33,34,35,36,0,0,37,38,39,83,
            66,0,43,44,45,46,47,48,49,50,
            0,10,2,65,27,0,68,69,0,73,
            26,0,1,28,9,4,5,6,7,8,
            9,72,11,12,13,14,15,16,17,18,
            19,20,21,22,23,24,25,32,27,0,
            0,30,51,0,0,40,41,3,37,38,
            39,66,0,0,43,44,45,46,47,48,
            49,50,0,10,0,1,26,56,4,5,
            6,7,8,9,66,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            0,27,0,53,30,33,34,35,36,0,
            0,37,38,39,51,0,1,43,44,45,
            46,47,48,49,50,0,1,65,0,4,
            5,6,7,8,9,7,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,0,27,53,0,30,54,42,4,31,
            6,0,37,38,39,63,0,58,43,44,
            45,46,47,48,49,50,0,1,0,0,
            4,5,6,7,8,9,32,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,0,27,26,3,30,0,57,30,
            0,60,5,37,38,39,0,0,1,43,
            44,45,46,47,48,49,50,0,1,63,
            0,4,5,6,7,8,29,7,11,12,
            13,14,15,16,17,18,19,20,21,22,
            23,24,25,0,0,1,0,30,5,0,
            7,31,9,10,37,38,39,0,9,2,
            43,44,45,46,47,48,49,50,0,1,
            64,3,29,67,31,32,33,34,35,36,
            0,32,0,40,41,0,1,0,3,40,
            41,0,0,0,51,52,0,0,55,3,
            57,58,10,60,0,0,10,64,0,4,
            67,6,0,8,0,28,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,0,28,0,1,4,5,6,7,8,
            9,10,0,51,64,0,59,67,61,62,
            5,58,7,56,9,10,0,1,0,3,
            29,28,31,32,8,53,84,59,37,61,
            62,40,41,0,29,42,31,32,33,34,
            35,36,51,52,28,40,41,0,57,58,
            3,33,34,35,36,64,51,52,42,0,
            55,28,57,0,0,60,0,4,4,6,
            6,8,70,71,11,12,13,14,15,16,
            17,18,19,20,21,22,23,24,25,0,
            0,0,0,4,2,6,5,8,0,1,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,24,25,0,57,0,52,60,
            29,55,5,59,7,61,62,0,0,65,
            66,3,68,69,70,71,0,73,74,75,
            76,77,78,0,0,0,29,4,31,6,
            33,34,35,36,11,12,13,14,15,16,
            17,18,19,20,21,22,23,24,25,0,
            80,0,0,4,0,6,0,3,7,7,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,24,25,0,0,52,2,4,
            55,6,31,31,0,0,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,0,0,1,0,4,0,6,0,5,
            8,5,11,12,13,14,15,16,17,18,
            19,20,21,22,23,24,25,0,0,0,
            28,3,5,29,7,29,9,10,0,10,
            0,3,0,0,42,5,3,7,63,9,
            10,0,10,0,70,71,29,0,31,32,
            33,34,35,36,0,8,2,40,41,29,
            0,31,32,33,34,35,36,7,51,52,
            40,41,55,0,0,28,0,3,5,0,
            7,51,9,51,0,1,10,3,9,42,
            0,31,8,33,34,35,36,0,57,56,
            0,60,29,0,31,32,33,34,35,36,
            26,32,28,40,41,0,1,27,3,40,
            41,0,1,8,3,0,42,0,28,8,
            5,0,0,0,3,0,9,2,54,0,
            0,2,42,28,0,0,0,63,3,28,
            0,0,1,3,29,0,0,42,26,32,
            0,26,2,42,0,26,26,40,41,54,
            26,0,26,0,0,42,79,0,0,1,
            0,10,0,28,10,53,0,1,0,1,
            10,0,0,2,2,0,0,2,0,3,
            2,0,0,0,3,2,0,0,2,27,
            0,0,0,0,58,0,3,0,0,0,
            3,0,58,0,1,0,0,2,26,10,
            53,0,1,0,0,2,26,26,0,0,
            2,2,0,0,10,2,0,0,0,3,
            2,0,0,2,81,0,0,2,2,0,
            0,54,2,0,0,53,0,0,53,0,
            0,0,0,0,0,54,0,0,0,0,
            54,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,54,0,0,0,
            82,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0
        };
    };
    public final static byte termCheck[] = TermCheck.termCheck;
    public final int termCheck(int index) { return termCheck[index]; }

    public interface TermAction {
        public final static char termAction[] = {0,
            5805,2890,5805,5180,5841,5293,5839,5911,2820,754,
            233,5855,5856,5857,5858,5859,5850,5848,5851,5849,
            5847,784,5852,5854,5853,6059,65,350,5805,5431,
            5907,66,5841,5805,5839,5805,2540,5207,5905,5906,
            5805,3240,5805,5121,5838,2750,5683,5909,5910,5913,
            5912,5805,163,263,2890,5805,6123,5841,5293,5839,
            5911,2820,754,5805,5855,5856,5857,5858,5859,5850,
            5848,5851,5849,5847,784,5852,5854,5853,6059,5446,
            350,5677,289,5907,6115,6116,6119,6117,6118,306,
            5207,5905,5906,5841,5554,5839,5121,5838,2750,5683,
            5909,5910,5913,5912,167,5457,5805,167,5369,5197,
            5512,5902,5540,436,211,5805,2890,5929,5804,5841,
            5293,5839,5911,2820,754,1330,5855,5856,5857,5858,
            5859,5850,5848,5851,5849,5847,784,5852,5854,5853,
            6059,5512,350,5540,436,5907,5805,217,217,217,
            217,61,5207,5905,5906,5841,5805,5839,5121,5838,
            2750,5683,5909,5910,5913,5912,5805,2890,5805,5645,
            5841,5293,5839,5911,2820,754,5805,5855,5856,5857,
            5858,5859,5850,5848,5851,5849,5847,784,5852,5854,
            5853,6059,183,350,276,5637,5907,193,4720,35,
            5805,4665,5194,5207,5905,5906,228,5805,298,5121,
            5838,2750,5683,5909,5910,5913,5912,5805,110,5805,
            2890,193,6124,5841,5293,5839,5911,2820,754,5842,
            5855,5856,5857,5858,5859,5850,5848,5851,5849,5847,
            784,5852,5854,5853,6059,581,350,5805,5564,5907,
            675,651,520,528,307,277,5207,5905,5906,3380,
            657,169,5121,5838,2750,5683,5909,5910,5913,5912,
            5805,173,1052,5457,684,175,5369,5197,278,422,
            5611,5805,2890,5617,181,5841,5293,5839,5911,2820,
            754,1330,5855,5856,5857,5858,5859,5850,5848,5851,
            5849,5847,784,5852,5854,5853,6059,181,350,5805,
            5805,5907,173,5805,5805,181,181,2610,5207,5905,
            5906,657,5805,5805,5121,5838,2750,5683,5909,5910,
            5913,5912,210,4827,5805,2890,3590,6120,5841,5293,
            5839,5911,2820,754,657,5855,5856,5857,5858,5859,
            5850,5848,5851,5849,5847,784,5852,5854,5853,6059,
            5805,350,5805,1891,5907,218,218,218,218,151,
            5805,5207,5905,5906,4775,5805,887,5121,5838,2750,
            5683,5909,5910,5913,5912,139,2890,6064,195,5841,
            5293,5839,5911,2820,754,201,5855,5856,5857,5858,
            5859,5850,5848,5851,5849,5847,784,5852,5854,5853,
            6059,157,350,6148,5805,5907,4010,967,5841,201,
            5839,5805,5207,5905,5906,5452,5805,155,5121,5838,
            2750,5683,5909,5910,5913,5912,83,2890,140,92,
            5841,5293,5839,5911,2820,754,1053,5855,5856,5857,
            5858,5859,5850,5848,5851,5849,5847,784,5852,5854,
            5853,6059,5805,350,3590,2680,5907,5805,161,5908,
            5805,161,532,5207,5905,5906,5805,5805,5645,5121,
            5838,2750,5683,5909,5910,5913,5912,5805,2890,6128,
            5805,5841,5293,5839,5911,2820,5075,5465,5855,5856,
            5857,5858,5859,5850,5848,5851,5849,5847,784,5852,
            5854,5853,6059,144,5805,5564,5805,5907,194,5805,
            202,5379,182,174,5207,5905,5906,5805,4977,6028,
            5121,5838,2750,5683,5909,5910,5913,5912,5805,5183,
            4424,5595,194,4360,202,182,218,218,218,218,
            147,5026,5805,182,182,41,5268,5805,5603,4928,
            4879,5805,336,5805,174,168,5805,5805,168,5572,
            162,156,4827,162,5805,5805,2540,150,290,5841,
            150,5839,5805,441,5805,5617,5855,5856,5857,5858,
            5859,5850,5848,5851,5849,5847,885,5852,5854,5853,
            6059,5805,5623,138,1635,5841,5818,5839,5819,678,
            5811,5815,5805,4775,149,156,5512,149,5540,436,
            194,4488,202,5887,182,174,146,450,202,5431,
            5817,41,5820,5814,2221,1243,6080,5512,5808,5540,
            436,5813,5812,56,194,967,202,182,218,218,
            218,218,5816,5806,40,182,182,5805,5809,5810,
            2960,218,218,218,218,5807,174,168,967,5805,
            168,5617,162,5805,234,162,338,5841,5841,5839,
            5839,762,432,435,5855,5856,5857,5858,5859,5850,
            5848,5851,5849,5847,885,5852,5854,5853,6059,5805,
            5805,187,5805,5841,6135,5839,532,767,5805,1255,
            5855,5856,5857,5858,5859,5850,5848,5851,5849,5847,
            885,5852,5854,5853,6059,5805,4607,182,4720,4549,
            5075,4665,194,5512,202,5540,436,5805,5805,5457,
            657,3030,5369,5197,432,435,5805,422,6115,6116,
            6119,6117,6118,252,5805,164,194,5841,202,5839,
            218,218,218,218,5855,5856,5857,5858,5859,5850,
            5848,5851,5849,5847,5833,5852,5854,5853,6059,5805,
            3310,197,196,5841,5805,5839,5805,3100,5465,5465,
            5855,5856,5857,5858,5859,5850,5848,5851,5849,5847,
            5833,5852,5854,5853,6059,5805,5805,4720,6134,5841,
            4665,5839,5379,5379,284,5805,5855,5856,5857,5858,
            5859,5850,5848,5851,5849,5847,885,5852,5854,5853,
            6059,255,146,450,186,5841,185,5839,5805,532,
            2221,532,5855,5856,5857,5858,5859,5850,5848,5851,
            5849,5847,885,5852,5854,5853,6059,162,5805,5805,
            40,5642,194,5075,202,5075,182,174,5805,3450,
            168,3170,170,40,967,194,429,202,6127,182,
            174,158,4827,5805,432,435,194,138,202,182,
            218,218,218,218,5805,2295,5865,182,182,194,
            194,202,182,218,218,218,218,202,174,168,
            182,182,168,174,5805,40,5805,5673,194,177,
            202,174,182,4775,146,450,3520,5431,4977,967,
            5805,202,2221,218,218,218,218,88,4607,5886,
            138,4549,194,5805,202,182,218,218,218,218,
            1079,5026,40,182,182,146,450,787,5595,4928,
            4879,146,450,2221,1244,184,967,176,41,2221,
            532,5805,5805,138,5572,5805,4977,5931,65,5805,
            331,5932,967,40,62,5805,84,65,5650,40,
            5805,5805,1361,5595,5075,5805,334,967,3590,5026,
            5805,3590,5864,967,152,3590,759,4928,4879,65,
            5274,348,1717,5805,5805,967,3660,5805,5805,1811,
            5805,3730,5805,5631,3800,2137,135,1893,5805,1975,
            3240,5805,5805,1343,1345,5805,5805,5935,5805,1346,
            6067,267,264,5805,5658,6066,5805,5805,5930,979,
            72,143,5805,5805,4488,5805,5186,5805,5805,5805,
            5353,5805,4488,345,2057,5805,5805,5933,2369,4080,
            1973,134,2139,5805,5805,5934,5700,2466,5805,5805,
            6062,5924,5805,5805,3730,5921,65,5805,5805,5595,
            6152,5805,5805,5936,3870,5805,5805,5925,5923,5805,
            5805,3940,5922,5805,5805,1354,5805,5805,6153,5805,
            5805,5805,5805,5805,5805,4150,5805,5805,5805,5805,
            4220,5805,5805,5805,5805,5805,5805,5805,5805,5805,
            5805,5805,5805,5805,5805,5805,4290,5805,5805,5805,
            6029
        };
    };
    public final static char termAction[] = TermAction.termAction;
    public final int termAction(int index) { return termAction[index]; }

    public interface Asb {
        public final static char asb[] = {0,
            521,53,346,533,1,55,467,467,450,450,
            450,61,450,450,346,51,346,52,355,313,
            330,313,313,467,467,467,450,467,467,399,
            256,257,540,96,346,313,10,260,6,119,
            306,165,306,313,426,313,313,14,18,16,
            24,22,10,28,26,211,214,217,220,315,
            315,315,346,223,495,226,229,29,346,158,
            355,355,231,313,313,313,467,346,313,395,
            346,331,47,542,331,541,98,242,115,245,
            272,403,331,63,313,401,346,96,272,272,
            331,247,346,346,100,346,263,98,315,315,
            315,315,315,315,315,315,10,249,467,315,
            315,315,315,315,315,315,315,315,263,313,
            346,448,448,252,257,255,467,346,307,245,
            7,98,98,242,471,242,262,269,265,98,
            467,242,270,268,269,270,98,313,355,355,
            346,354,260,6,354,10,28,28,10,24,
            24,10,18,18,10,14,14,346,313,330,
            10,16,16,16,16,10,22,22,10,26,
            158,313,313,96,330,47,96,331,331,313,
            63,313,448,346,357,346,346,313,313,309,
            311,311,263,355,331,313,9,355,63,346,
            448,313,98,346,98,208,307,272,98,313,
            467,313,98,57,242,98,8,63,7,262,
            63,63,98,163,162,161,242,469,263,467,
            263,467,204,313,448,349,331,312,9,98,
            9,357,98,98,313,346,313,346,313,313,
            448,431,500,272,313,63,63,98,163,98,
            163,351,242,163,242,470,98,98,313,313,
            313,98,98,98
        };
    };
    public final static char asb[] = Asb.asb;
    public final int asb(int index) { return asb[index]; }

    public interface Asr {
        public final static byte asr[] = {0,
            4,27,3,6,30,8,28,42,1,33,
            34,35,36,7,31,29,5,32,9,40,
            41,10,51,55,52,60,57,58,67,64,
            2,56,53,54,26,63,79,80,81,82,
            83,65,68,69,70,71,84,61,59,62,
            66,73,85,0,85,10,2,26,3,0,
            59,0,46,5,37,43,1,8,45,11,
            12,13,14,15,21,49,50,7,47,48,
            30,39,38,20,17,19,16,18,22,24,
            23,25,44,27,9,4,6,2,0,52,
            64,37,57,58,9,41,40,10,51,29,
            5,7,31,8,4,6,32,0,29,5,
            7,31,32,9,40,41,51,56,53,33,
            34,79,35,36,55,60,67,80,81,82,
            52,57,58,64,83,61,65,68,66,73,
            84,59,69,70,71,62,30,2,85,10,
            26,63,54,0,29,5,7,31,32,9,
            10,40,41,51,2,56,53,33,54,26,
            63,34,79,35,36,55,60,67,80,81,
            82,52,57,58,64,83,61,65,68,59,
            69,62,27,66,73,84,85,71,70,0,
            64,67,0,57,60,0,10,51,0,29,
            5,0,7,31,0,52,55,0,58,0,
            10,27,54,63,65,68,69,70,71,85,
            28,2,26,0,63,0,80,0,83,26,
            0,3,1,0,1,3,61,59,62,28,
            0,26,53,0,10,3,0,79,26,56,
            0,9,5,37,43,4,6,44,20,17,
            19,16,18,22,24,23,25,21,38,39,
            30,47,48,7,50,49,11,12,13,14,
            15,45,8,46,56,1,27,0,81,0,
            2,72,27,9,46,5,37,43,44,38,
            39,30,47,48,7,50,49,45,1,8,
            11,12,13,14,15,20,17,19,16,18,
            22,24,23,25,21,4,6,0,82,0,
            54,3,0,42,1,0,29,5,7,31,
            32,9,10,40,41,51,2,56,53,33,
            54,26,63,34,79,35,36,55,60,67,
            80,81,82,52,57,58,64,83,61,59,
            70,71,62,42,66,73,84,85,68,69,
            65,0,29,5,7,31,32,9,10,40,
            41,51,63,55,60,67,52,57,58,64,
            28,42,3,8,1,33,34,36,35,0,
            20,17,19,16,18,22,24,23,25,4,
            6,11,12,13,14,15,21,10,0,11,
            12,13,14,15,20,17,19,16,18,22,
            24,23,25,21,4,6,3,0,63,54,
            29,5,7,31,10,51,2,33,26,34,
            35,36,55,60,67,52,57,58,64,28,
            42,8,1,3,32,9,40,41,0,65,
            68,69,20,17,19,16,18,22,24,23,
            25,4,6,11,12,13,14,15,21,0,
            73,66,61,59,62,65,68,69,71,70,
            6,4,85,74,75,77,78,76,0,28,
            66,84,0
        };
    };
    public final static byte asr[] = Asr.asr;
    public final int asr(int index) { return asr[index]; }

    public interface Nasb {
        public final static byte nasb[] = {0,
            100,46,45,27,46,46,46,46,45,45,
            45,46,45,45,24,7,45,30,46,42,
            44,42,42,46,46,46,45,46,46,49,
            46,32,103,45,45,1,46,46,53,46,
            46,46,46,42,46,42,42,46,46,46,
            46,46,46,46,46,46,46,46,46,91,
            91,91,119,46,46,46,46,46,45,46,
            46,46,46,42,42,42,46,108,42,34,
            45,45,36,46,45,7,46,46,45,46,
            42,53,45,9,42,46,105,113,42,42,
            44,46,45,45,21,45,46,46,55,55,
            67,67,79,79,15,15,46,46,46,91,
            91,85,85,85,85,73,73,61,46,42,
            108,46,46,46,32,46,46,45,46,46,
            47,46,46,46,53,46,46,46,46,46,
            46,46,46,46,46,46,46,42,46,46,
            45,47,46,47,53,46,46,46,46,46,
            46,46,46,46,46,46,46,97,42,44,
            46,46,46,46,46,46,46,46,46,46,
            46,42,42,45,44,36,45,44,44,1,
            42,42,46,45,47,116,110,42,42,46,
            42,42,46,46,45,42,46,46,40,45,
            46,42,46,45,46,51,46,42,46,42,
            46,42,46,46,46,46,47,42,47,46,
            42,42,46,46,46,46,46,53,46,46,
            46,46,38,1,46,46,44,42,46,46,
            46,47,46,46,42,97,42,45,42,42,
            46,44,44,42,42,42,42,46,46,46,
            46,46,46,46,46,53,46,46,42,42,
            42,46,46,46
        };
    };
    public final static byte nasb[] = Nasb.nasb;
    public final int nasb(int index) { return nasb[index]; }

    public interface Nasr {
        public final static char nasr[] = {0,
            3,6,16,2,99,0,87,0,130,3,
            6,16,2,0,6,16,3,2,45,0,
            2,115,0,2,126,0,111,112,0,106,
            0,108,0,94,0,86,0,95,0,70,
            71,6,16,3,2,0,80,0,127,0,
            125,0,72,0,6,16,3,2,63,0,
            3,6,16,2,60,0,6,16,3,2,
            57,0,3,6,16,2,54,0,6,16,
            3,2,51,0,3,6,16,2,48,0,
            2,6,16,3,34,0,2,71,0,2,
            121,111,107,0,2,118,0,110,109,2,
            70,0,117,2,0,2,100,0,2,119,
            0
        };
    };
    public final static char nasr[] = Nasr.nasr;
    public final int nasr(int index) { return nasr[index]; }

    public interface TerminalIndex {
        public final static char terminalIndex[] = {0,
            11,12,20,34,2,88,3,15,6,7,
            54,55,56,57,58,59,60,61,62,63,
            64,65,66,67,85,19,13,21,1,37,
            4,5,17,23,26,27,46,35,36,8,
            9,25,31,38,39,48,50,51,52,53,
            10,43,16,18,29,14,44,45,74,30,
            68,84,22,47,69,71,32,70,75,76,
            77,28,72,78,79,80,81,82,24,40,
            41,42,49,73,87,83,86,89,90,91
        };
    };
    public final static char terminalIndex[] = TerminalIndex.terminalIndex;
    public final int terminalIndex(int index) { return terminalIndex[index]; }

    public interface NonterminalIndex {
        public final static char nonterminalIndex[] = {0,
            94,95,93,0,97,99,0,0,0,0,
            0,0,0,0,0,109,0,0,0,0,
            0,0,0,0,0,111,0,0,0,0,
            114,0,0,139,140,0,0,0,0,0,
            0,0,135,136,137,132,133,134,129,130,
            131,126,127,128,123,124,125,120,121,122,
            117,118,119,102,112,115,0,116,0,101,
            103,147,113,0,0,96,98,0,0,0,
            0,0,164,106,138,143,152,0,0,0,
            105,108,0,144,145,149,0,159,162,104,
            0,107,0,0,148,150,151,154,155,156,
            160,161,0,0,92,0,100,110,141,142,
            146,0,0,0,153,157,158,163,165,166,
            0,0,0
        };
    };
    public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
    public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }

    public interface ScopePrefix {
        public final static char scopePrefix[] = {
            239,275,285,1,178,207,215,261,295,249,
            70,83,193,200,47,58,64,187,233,172,
            223,269,92,32,36,303,307,311,315,319,
            165,12,44,55,110,77,101,40,17,22,
            27,113,113,121,121,129,129,129,129,143,
            143,22,17,157,27
        };
    };
    public final static char scopePrefix[] = ScopePrefix.scopePrefix;
    public final int scopePrefix(int index) { return scopePrefix[index]; }

    public interface ScopeSuffix {
        public final static char scopeSuffix[] = {
            10,10,10,10,10,10,10,10,10,257,
            10,90,10,10,53,10,10,10,10,169,
            229,257,97,10,10,53,53,53,10,10,
            169,15,42,53,10,80,104,42,19,24,
            29,115,118,123,126,131,134,137,140,145,
            148,151,154,159,162
        };
    };
    public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
    public final int scopeSuffix(int index) { return scopeSuffix[index]; }

    public interface ScopeLhs {
        public final static char scopeLhs[] = {
            25,24,24,42,27,27,27,25,24,25,
            27,37,27,27,69,38,38,27,27,30,
            27,25,37,39,39,11,10,10,7,6,
            30,40,99,69,35,36,37,99,60,57,
            67,45,45,48,48,51,51,51,51,54,
            54,57,60,63,67
        };
    };
    public final static char scopeLhs[] = ScopeLhs.scopeLhs;
    public final int scopeLhs(int index) { return scopeLhs[index]; }

    public interface ScopeLa {
        public final static byte scopeLa[] = {
            2,2,2,2,2,2,2,2,2,54,
            2,82,2,2,56,2,2,2,2,53,
            26,54,81,2,2,56,56,56,2,2,
            53,53,63,56,2,83,80,63,60,55,
            67,31,7,5,29,41,40,9,32,51,
            10,52,57,58,64
        };
    };
    public final static byte scopeLa[] = ScopeLa.scopeLa;
    public final int scopeLa(int index) { return scopeLa[index]; }

    public interface ScopeStateSet {
        public final static byte scopeStateSet[] = {
            10,10,10,10,10,10,10,10,10,10,
            10,10,10,10,30,10,10,10,10,10,
            10,10,10,10,10,10,10,10,1,1,
            10,10,77,30,10,10,10,77,27,25,
            30,15,15,17,17,21,21,21,21,23,
            23,25,27,28,30
        };
    };
    public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
    public final int scopeStateSet(int index) { return scopeStateSet[index]; }

    public interface ScopeRhs {
        public final static char scopeRhs[] = {0,
            171,1,170,53,91,8,34,116,0,2,
            0,154,8,0,53,0,149,0,60,147,
            0,146,0,55,144,0,158,0,67,153,
            0,219,1,91,0,171,1,91,0,173,
            0,63,0,173,189,0,189,27,32,218,
            9,0,56,0,189,27,0,194,1,91,
            35,116,0,194,1,91,36,116,0,171,
            1,162,91,33,116,0,209,46,0,83,
            154,0,154,81,154,80,154,45,0,82,
            0,154,80,154,45,0,81,154,82,0,
            154,45,0,80,154,81,154,82,0,154,
            1,0,134,0,31,124,0,7,124,0,
            137,0,5,135,0,29,135,0,140,0,
            41,138,0,40,138,0,9,138,0,32,
            138,0,143,0,51,141,0,10,141,0,
            52,144,0,57,147,0,152,0,58,150,
            0,64,153,0,163,8,91,0,53,170,
            0,163,8,91,34,116,0,171,1,170,
            166,28,95,34,116,0,171,1,166,28,
            95,0,171,1,170,91,34,116,0,171,
            1,170,205,34,116,0,163,26,91,1,
            91,33,116,0,163,26,155,1,91,33,
            116,0,155,1,91,33,116,0,26,163,
            2,0,154,1,91,33,116,0,154,54,
            161,63,181,1,91,33,116,0,161,63,
            181,1,91,33,116,0,54,154,2,0,
            154,54,161,1,91,33,116,0,161,1,
            91,33,116,0,154,54,181,26,160,1,
            91,33,116,0,154,54,181,26,91,1,
            91,33,116,0,154,54,181,1,91,33,
            116,0,208,27,21,0,191,27,96,0,
            191,27,93,0,206,1,21,0,167,1,
            93,0
        };
    };
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
    public final int scopeRhs(int index) { return scopeRhs[index]; }

    public interface ScopeState {
        public final static char scopeState[] = {0,
            5353,5186,5658,5650,5603,5595,5572,5564,5431,5465,
            5379,5293,5207,5121,5075,532,5026,4977,4928,4879,
            4827,4775,4720,4665,4607,4549,4488,4424,4360,4290,
            4220,4150,2139,2057,4080,1551,1079,2466,4010,3940,
            2369,1975,1893,1811,3870,3800,1467,3730,887,2295,
            1361,1255,1717,3660,3590,1635,3520,3450,3380,3310,
            3240,684,581,2221,450,1171,3170,3100,3030,2960,
            2890,2820,2750,2680,2610,2540,979,787,350,0
        };
    };
    public final static char scopeState[] = ScopeState.scopeState;
    public final int scopeState(int index) { return scopeState[index]; }

    public interface InSymb {
        public final static char inSymb[] = {0,
            0,203,201,211,92,91,70,71,69,68,
            65,62,59,61,66,197,73,210,91,10,
            3,3,3,172,172,172,59,172,172,216,
            91,95,95,1,9,27,125,95,91,106,
            21,96,93,45,116,8,1,133,139,136,
            145,142,121,151,148,158,149,143,137,43,
            37,5,46,134,140,146,152,156,8,167,
            21,93,95,3,3,3,172,3,3,217,
            3,28,198,214,28,197,187,188,218,173,
            189,91,28,1,8,42,27,1,27,27,
            1,154,35,36,34,33,154,154,67,64,
            60,57,51,10,5,29,121,209,91,31,
            7,41,40,9,32,55,52,58,91,10,
            3,200,160,91,95,166,2,26,32,173,
            166,219,171,163,91,220,163,208,91,206,
            91,207,191,154,192,191,167,80,91,91,
            8,205,95,91,91,121,152,152,121,146,
            146,121,140,140,121,134,134,26,83,3,
            121,137,137,137,137,121,143,143,121,149,
            53,10,10,1,3,198,1,3,3,27,
            1,26,3,26,53,26,26,79,26,154,
            1,1,91,170,28,8,170,162,1,8,
            167,10,187,8,187,167,167,189,171,10,
            91,81,194,72,195,194,53,1,166,163,
            1,1,154,161,181,160,155,91,91,2,
            91,2,215,27,3,154,3,26,170,171,
            170,53,171,171,54,63,54,26,26,26,
            53,3,3,189,10,1,1,154,161,154,
            181,91,163,181,163,91,171,171,54,54,
            54,154,154,154
        };
    };
    public final static char inSymb[] = InSymb.inSymb;
    public final int inSymb(int index) { return inSymb[index]; }

    public interface Name {
        public final static String name[] = {
            "",
            "+",
            "-",
            "*",
            "/",
            ">",
            "<",
            "=",
            ">=",
            "<=",
            "<>",
            "(",
            ")",
            "{",
            "}",
            "[",
            "]",
            "->",
            "|",
            ",",
            ":",
            "::",
            ";",
            ".",
            "..",
            "@",
            "^",
            "^^",
            "?",
            "&&",
            "||",
            "!",
            "=>",
            "$empty",
            "QUOTED_IDENTIFIER",
            "INTEGER_LITERAL",
            "REAL_LITERAL",
            "STRING_LITERAL",
            "self",
            "if",
            "then",
            "else",
            "endif",
            "and",
            "or",
            "xor",
            "not",
            "implies",
            "let",
            "in",
            "true",
            "false",
            "null",
            "invalid",
            "Set",
            "Bag",
            "Sequence",
            "Collection",
            "OrderedSet",
            "String",
            "Integer",
            "UnlimitedNatural",
            "Real",
            "Boolean",
            "Tuple",
            "OclAny",
            "OclVoid",
            "OclInvalid",
            "inv",
            "pre",
            "post",
            "context",
            "package",
            "endpackage",
            "def",
            "body",
            "derive",
            "init",
            "function",
            "helper",
            "relation",
            "map",
            "rule",
            "return",
            "static",
            "OclMessage",
            "class",
            "EOF_TOKEN",
            "IDENTIFIER",
            "SINGLE_LINE_COMMENT",
            "MULTI_LINE_COMMENT",
            "ERROR_TOKEN",
            "conceptualOperationNameCS",
            "CollectionTypeIdentifierCS",
            "simpleNameCS",
            "QuotedSimpleNameCS",
            "unreservedSimpleNameCS",
            "pathNameCS",
            "typeCS",
            "collectionTypeCS",
            "tupleTypePartsCS",
            "typedUninitializedVariableCS",
            "OclExpressionCS",
            "typedInitializedVariableCS",
            "initializedVariableCS",
            "uninitializedVariableCS",
            "VariableDeclarationCS",
            "CollectionLiteralPartsCS",
            "CollectionLiteralPartCS",
            "StringLiteralExpCS",
            "TupleLiteralPartsCS",
            "primaryExpCS",
            "notNameExpressionCS",
            "argumentsCS",
            "SimpleNameExpCS",
            "impliesNotNameNotLetCS",
            "impliesNotLetCS",
            "xorNotNameNotLetCS",
            "xorNotLetCS",
            "xorWithLetCS",
            "orNotNameNotLetCS",
            "orNotLetCS",
            "orWithLetCS",
            "andNotNameNotLetCS",
            "andNotLetCS",
            "andWithLetCS",
            "equalityNotNameNotLetCS",
            "equalityNotLetCS",
            "equalityWithLetCS",
            "relationalNotNameNotLetCS",
            "relationalNotLetCS",
            "relationalWithLetCS",
            "additiveNotNameNotLetCS",
            "additiveNotLetCS",
            "additiveWithLetCS",
            "multiplicativeNotNameNotLetCS",
            "multiplicativeNotLetCS",
            "multiplicativeWithLetCS",
            "unaryNotLetCS",
            "unaryWithLetCS",
            "primaryNotNameCS",
            "letVariablesCS",
            "packageDeclarationsCS",
            "invOrDefCS",
            "prePostOrBodyDeclCS",
            "initOrDerValueCS",
            "helperDefsCS",
            "isMarkedPreCS",
            "OclMessageArgumentsCS",
            "OclMessageArgCS",
            "packageDeclarationCS_A",
            "contextDeclsCS",
            "contextDeclCS",
            "initOrDerValuesCS",
            "invOrDefsCS",
            "defExpressionCS",
            "operationCS1",
            "operationCS2",
            "prePostOrBodyDeclsCS",
            "parametersCS",
            "functionModifier",
            "helperDefCS",
            "blockExprs",
            "modifiers",
            "blockExpr",
            "exArgumentsCSopt",
            "exArgumentsCS"
        };
    };
    public final static String name[] = Name.name;
    public final String name(int index) { return name[index]; }

    public final int originalState(int state) {
        return -baseCheck[state];
    }
    public final int asi(int state) {
        return asb[originalState(state)];
    }
    public final int nasi(int state) {
        return nasb[originalState(state)];
    }
    public final int inSymbol(int state) {
        return inSymb[originalState(state)];
    }

    /**
     * assert(! goto_default);
     */
    public final int ntAction(int state, int sym) {
        return baseAction[state + sym];
    }

    /**
     * assert(! shift_default);
     */
    public final int tAction(int state, int sym) {
        int i = baseAction[state],
            k = i + sym;
        return termAction[termCheck[k] == sym ? k : i];
    }
    public final int lookAhead(int la_state, int sym) {
        int k = la_state + sym;
        return termAction[termCheck[k] == sym ? k : la_state];
    }
}
